/* Set the defaults for DataTables initialisation *

 /* Default class modification */
$.extend($.fn.dataTableExt.oStdClasses, {
	"sWrapper" : "dataTables_wrapper form-inline"
});

/* API method to get paging information */
$.fn.dataTableExt.oApi.fnPagingInfo = function(oSettings) {
	return {
		"iStart" : oSettings._iDisplayStart,
		"iEnd" : oSettings.fnDisplayEnd(),
		"iLength" : oSettings._iDisplayLength,
		"iTotal" : oSettings.fnRecordsTotal(),
		"iFilteredTotal" : oSettings.fnRecordsDisplay(),
		"iPage" : oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength),
		"iTotalPages" : oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)
	};
};

/* Bootstrap style pagination control */
$.extend($.fn.dataTableExt.oPagination, {
	"bootstrap" : {
		"fnInit" : function(oSettings, nPaging, fnDraw) {
			var oLang = oSettings.oLanguage.oPaginate;
			var fnClickHandler = function(e) {
				e.preventDefault();
				if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
					fnDraw(oSettings);
				}
			};
			$(nPaging).append(
				'<ul class="pagination">' +
					'<li class="prev disabled"><a href="#"><i class="icon-double-angle-left"></i> ' + oLang.sPrevious + '</a></li>' +
					'<li class="next disabled"><a href="#">' + oLang.sNext + ' <i class="icon-double-angle-right"></i></a></li>'
				+ '</ul>'
			);

			var els = $('a', nPaging);
			$(els[0]).bind('click.DT', {
				action : "previous"
			}, fnClickHandler);
			$(els[1]).bind('click.DT', {
				action : "next"
			}, fnClickHandler);
		},

		"fnUpdate" : function(oSettings, fnDraw) {
			var iListLength = 5;
			var oPaging = oSettings.oInstance.fnPagingInfo();
			var an = oSettings.aanFeatures.p;
			var i, ien, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2);

			if (oPaging.iTotalPages < iListLength) {
				iStart = 1;
				iEnd = oPaging.iTotalPages;
			} else if (oPaging.iPage <= iHalf) {
				iStart = 1;
				iEnd = iListLength;
			} else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) {
				iStart = oPaging.iTotalPages - iListLength + 1;
				iEnd = oPaging.iTotalPages;
			} else {
				iStart = oPaging.iPage - iHalf + 1;
				iEnd = iStart + iListLength - 1;
			}

			for ( i = 0, ien = an.length; i < ien; i++) {
				// Remove the middle elements
				$('li:gt(0)', an[i]).filter(':not(:last)').remove();

				// Add the new list items and their event handlers
				for ( j = iStart; j <= iEnd; j++) {
					sClass = (j == oPaging.iPage + 1) ? 'class="active"' : '';
					$('<li ' + sClass + '><a href="#">' + j + '</a></li>').insertBefore($('li:last', an[i])[0]).bind('click', function(e) {
						e.preventDefault();
						oSettings._iDisplayStart = (parseInt($('a', this).text(), 10) - 1) * oPaging.iLength;
						fnDraw(oSettings);
					});
				}

				// Add / remove disabled classes from the static elements
				if (oPaging.iPage === 0) {
					$('li:first', an[i]).addClass('disabled');
				} else {
					$('li:first', an[i]).removeClass('disabled');
				}

				if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) {
					$('li:last', an[i]).addClass('disabled');
				} else {
					$('li:last', an[i]).removeClass('disabled');
				}
			}
		}
	}
});

/*
 * TableTools Bootstrap compatibility
 * Required TableTools 2.1+
 */
if ($.fn.DataTable.TableTools) {
	// Set the classes that TableTools uses to something suitable for Bootstrap
	$.extend(true, $.fn.DataTable.TableTools.classes, {
		"container" : "DTTT btn-group",
		"buttons" : {
			"normal" : "btn",
			"disabled" : "disabled"
		},
		"collection" : {
			"container" : "DTTT_dropdown dropdown-menu",
			"buttons" : {
				"normal" : "",
				"disabled" : "disabled"
			}
		},
		"print" : {
			"info" : "DTTT_print_info modal"
		},
		"select" : {
			"row" : "active"
		}
	});

	// Have the collection use a bootstrap compatible dropdown
	$.extend(true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {
		"collection" : {
			"container" : "ul",
			"button" : "li",
			"liner" : "a"
		}
	});
}

/* Table initialisation */
$(document).ready(function() {
	$('#example').dataTable({
		"sDom" : "<'row'<'col-6'f><'col-6'l>r>t<'row'<'col-6'i><'col-6'p>>",
		"sPaginationType" : "bootstrap",
		"oLanguage" : {
			"sLengthMenu" : "_MENU_ registros por página",
			"sSearch" : "",
			"sInfo" : "Mostrando _START_ a _END_ de _TOTAL_ registros",
			"sPrevious" : "&#8592; Anterior",
			"sNext" : "Siguiente &#8594;",
			"sEmptyTable" : "Información no disponible en la tabla",
			"sInfoFiltered" : "(filtrado de un total de _MAX_ registros)",
			"sInfoEmpty" : "Mostrando 0 a 0 de 0 registros",
			"sZeroRecords" : "No se encontro registros relacionados"
		}
	});
});

$(function() {
	$('#example').each(function() {
		var datatable = $(this);
		// SEARCH - Add the placeholder for Search and Turn this into in-line formcontrol
		var search_input = datatable.closest('.dataTables_wrapper').find('div[id$=_filter] input');
		search_input.attr('placeholder', 'Buscar')
		search_input.addClass('form-control input-small')
		search_input.css('width', '250px')

		// SEARCH CLEAR - Use an Icon
		var clear_input = datatable.closest('.dataTables_wrapper').find('div[id$=_filter] a');
		clear_input.html('<i class="icon-remove-circle icon-large"></i>')
		clear_input.css('margin-left', '5px')

		// LENGTH - Inline-Form control
		var length_sel = datatable.closest('.dataTables_wrapper').find('div[id$=_length] select');
		length_sel.addClass('form-control input-small')
		length_sel.css('width', '75px')

		// LENGTH - Info adjust location
		var length_sel = datatable.closest('.dataTables_wrapper').find('div[id$=_info]');
		length_sel.css('margin-top', '0px')
	});
});

/* Table initialisation */
$(document).ready(function() {
	$('#evento').dataTable({
		"sDom" : "<'row'<'col-6'f><'col-6'l>r>t<'row'<'col-6'i><'col-6'p>>",
		"sPaginationType" : "bootstrap",
		"bSort": false,
		"aLengthMenu": [[5, 10, 20, 30, -1], [5, 10, 20, 30, "Todos"]],
		"iDisplayLength": 5,
		"oLanguage" : {
			"sLengthMenu" : "Mostrar _MENU_ eventos por página",
			"sSearch" : "",
			"sInfo" : "Mostrando _START_ a _END_ de _TOTAL_ eventos",
			"sPrevious" : "&#8592; Anterior",
			"sNext" : "Siguiente &#8594;",
			"sEmptyTable" : "Eventos no disponibles",
			"sInfoFiltered" : "(filtrado de un total de _MAX_ eventos)",
			"sInfoEmpty" : "Mostrando 0 a 0 de 0 eventos",
			"sZeroRecords" : "No se encontraron eventos relacionados"
		}
	});
});

$(function() {
	$('#evento').each(function() {
		var datatable = $(this);
		// SEARCH - Add the placeholder for Search and Turn this into in-line formcontrol
		var search_input = datatable.closest('.dataTables_wrapper').find('div[id$=_filter] input');
		search_input.attr('placeholder', 'Buscar')
		search_input.addClass('form-control input-small')
		search_input.css('width', '250px')
		search_input.css('position', 'absolute')
		search_input.css('top', '80px')
		search_input.css('right', '160px')

		// SEARCH CLEAR - Use an Icon
		var clear_input = datatable.closest('.dataTables_wrapper').find('div[id$=_filter] a');
		clear_input.html('<i class="icon-remove-circle icon-large"></i>')
		clear_input.css('margin-left', '5px')

		// LENGTH - Inline-Form control
		var length_sel = datatable.closest('.dataTables_wrapper').find('div[id$=_length] select');
		length_sel.addClass('form-control input-small')
		length_sel.css('width', '75px')
		var length_lab = datatable.closest('.dataTables_wrapper').find('div[id$=_length] label');
		length_lab.addClass('lab')
		length_lab.css('position', 'absolute')
		length_lab.css('top', '135px')
		length_lab.css('right', '160px')

		// LENGTH - Info adjust location
		var length_sel = datatable.closest('.dataTables_wrapper').find('div[id$=_info]');
		length_sel.css('margin-top', '0px')
	});
});